<template>
  <div>
    <span>
      需要创建一个admin用户并授予admin角色绑定，使用下面的yaml文件创建admin用户并赋予他管理员权限，然后将token复制至输入框。
    </span>
    <div style="margin-top: 5px; margin-bottom: 5px;">
      1、生成kubernetes集群最高权限admin用户的token
      <codemirror v-model="yamlString" :options="cmOptions"/>
    </div>
    <div style="margin-top: 5px; margin-bottom: 5px;">
      2、执行下面的命令创建 serviceaccount 和角色绑定
      <br>
      <span style="color: #1f1f1f; font-size: 18px; margin-left: 30px; margin-top: 5px;">
        kubectl create -f admin-role.yaml
      </span>
    </div>
    <div style="margin-top: 5px; margin-bottom: 5px;">
      3、创建完成后获取secret中token的值
      <div style="margin-top: 5px; margin-bottom: 5px;">
        （1）获取admin-token的secret名
      </div>
      <span style="color: #1f1f1f; font-size: 18px; margin-left: 30px; margin-top: 5px;">
        kubectl -n kube-system get secret|grep admin-token
      </span>
      <div style="margin-top: 5px; margin-bottom: 5px;">
        （2）使用 jsonpath 的方式直接获取 token 的值
      </div>
      <span style="color: #1f1f1f; font-size: 18px; margin-left: 30px; margin-top: 5px;">
        kubectl -n kube-system get secret admin-token-nwphb -o jsonpath={.data.token}|base64 -d
      </span>
    </div>
    <div style="margin-top: 5px; margin-bottom: 5px;">
      4、若以上获取token值不成功，可使用以下命令：
      <div>
        <span style="color: #1f1f1f; font-size: 18px; margin-left: 30px; margin-top: 5px;">
          kubectl describe secret admin-token-nwphb
        </span>
      </div>
    </div>
    <div style="margin-top: 5px; margin-bottom: 5px;">
      5、将获取的token复制到输入框，并填写完其他信息，添加集群即可。
    </div>
  </div>
</template>

<script>

  import {codemirror} from "vue-codemirror";
  import "codemirror/lib/codemirror.css";
  import "codemirror/mode/yaml/yaml.js";

  export default {
    name: "createTokenMethod",
    components: {
      codemirror,
    },
    data() {
      return {
        key: 'value',
        yamlString: 'kind: ClusterRoleBinding\n' +
          'apiVersion: rbac.authorization.k8s.io/v1\n' +
          'metadata:\n' +
          '  name: admin\n' +
          '  annotations:\n' +
          '    rbac.authorization.kubernetes.io/autoupdate: "true"\n' +
          'roleRef:\n' +
          '  kind: ClusterRole\n' +
          '  name: cluster-admin\n' +
          '  apiGroup: rbac.authorization.k8s.io\n' +
          'subjects:\n' +
          '- kind: ServiceAccount\n' +
          '  name: admin\n' +
          '  namespace: kube-system\n' +
          '---\n' +
          'apiVersion: v1\n' +
          'kind: ServiceAccount\n' +
          'metadata:\n' +
          '  name: admin\n' +
          '  namespace: kube-system\n' +
          '  labels:\n' +
          '    kubernetes.io/cluster-service: "true"\n' +
          '    addonmanager.kubernetes.io/mode: Reconcile',
        cmOptions: {
          mode: "yaml", // 使用YAML模式
          theme: "default", // 使用默认主题
          lineNumbers: true, // 显示行号
          line: true, // 显示行高亮
          styleActiveLine: true, // 高亮当前行
          matchBrackets: true, // 括号匹配高亮
          autoCloseBrackets: true, // 自动闭合括号
          gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"], // 显示行号和折叠标记
          foldGutter: true, // 启用折叠功能
          extraKeys: {"Ctrl-Space": "autocomplete"}, // 添加自动完成快捷键
          readOnly: true, // 禁止编辑
        },
      }
    },
  }
</script>

<style scoped>

</style>
